package br.com.JZSolution.negocio;

import java.util.List;

import br.com.JZSolution.persistencia.SuperDao;

/**
 * SuperNegocio - Cria a logica de negocio generica para o CRUD de uma entidade
 *
 * @param <T> - Entidade gerenciada
 */
public abstract class SuperNegocio<T> {

	protected SuperDao<T> entidadeDao;
	
	public void criar(T obj){
		entidadeDao.getEm().getTransaction().begin();
		entidadeDao.criar(obj);
		entidadeDao.getEm().getTransaction().commit();
	}
	
	public void atualizar(T obj){
		entidadeDao.getEm().getTransaction().begin();
		entidadeDao.atualizar(obj);
		entidadeDao.getEm().getTransaction().commit();
	}
	
	public void remover(T obj){
		entidadeDao.remover(obj);
	}
	
	public void remover(long id){
		entidadeDao.remover(id);
	}
	
	public T selecionar(long id){
		return entidadeDao.selecionar(id);
	}
	
	public List<T> listar(){
		return entidadeDao.listar();
	}
	
}
